// cloudfunctions/getuserprinters/index.js
const cloud = require('wx-server-sdk');
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });
const db = cloud.database();
const _ = db.command;

/**
 * 入口函数
 * 获取所有打印机列表，并为每台打印机附加排队数
 * (此函数对所有用户开放)
 */
exports.main = async (event, context) => {
  try {
    // 1. 获取打印机列表
    const printerRes = await db.collection('printers').get();
    const printers = printerRes.data;

    if (!printers.length) {
      return { success: true, data: [] };
    }

    // 2. 为每台打印机统计排队订单数量（pending/printing）
    const queueTasks = printers.map(p => {
      return db.collection('orders')
        .where({
          printerId: p._id,
          printStatus: _.in(['pending', 'printing'])
        })
        .count()
        .then(res => ({
          ...p, // 包含打印机所有原始信息
          queueCount: res.total // 附加排队数
        }))
        .catch(() => ({
          ...p,
          queueCount: 0 // 出错时默认为0
        }));
    });

    // 3. 等待所有统计完成
    const printersWithQueue = await Promise.all(queueTasks);
    
    return {
      success: true,
      data: printersWithQueue
    };

  } catch (e) {
    console.error('获取打印机列表失败', e);
    return {
      success: false,
      message: '获取列表失败'
    };
  }
};